Systems and methods for providing content in a content list

ABSTRACT

Providing content in a content list may include identifying positions within the list where content can be provided. A client agent may automatically play items of content at a first position when determining that the first position is within a displayed region of the content list. The client agent may identify a duration during which the first item is within the displayed region of the list, pause playback of the first item at a point in time when the displayed region of the list is advanced to no longer include the first position, and compare the first duration to a threshold value. The client agent may determine that the displayed region of the list has advanced to a second position and resume playback of the first item near the point in time and at the second position if the duration is less than the threshold value.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims the benefit of priority under 35 U.S.C. §120 toU.S. patent application Ser. No. 14/937,480, filed on Nov. 10, 2015which in turn claims priority to U.S. Provisional Patent Application62/246,436, filed on Oct. 26, 2015, all of which are hereby incorporatedby reference in their entirety.

BACKGROUND

Items of content on the Internet, such as videos (including user-createdvideos), pictures, audio recordings, text, interactive games, quizzes,or other such content, may be displayed or presented in a list,sometimes referred to as a “feed”, “stream”, “timeline”, or by othersuch names. In some instances, such as with audio or video, the contentmay be configured to automatically play when displayed by an applicationas a user scrolls through the list, providing an easy way to ingestcontent.

SUMMARY

Internet content may be monetized through additional paid content, suchas advertising, which may both support server and network infrastructurefor the feeds as well as incentivize content creation through paymentsper viewing and/or interaction. In some instances, in which items ofcontent are individually or serially displayed, advertising may bedisplayed in banners, adjacent to the content, or in pop-up windows. Insome instances with multimedia content, such as videos, advertising maybe shown via pre-roll or post-roll videos before or after the content,or as interstitial advertising inserted into a break in the middle ofthe content or between items of content.

Playback of videos in content feeds (“in-feed videos”) has created a newopportunity for in-feed video advertisements. In-feed videoadvertisements may capture more user attention than other feedadvertisement formats because users tend to not appreciate in-stream adsthat play back at the beginning of or in the middle of a video becausethe user did not explicitly choose to watch any of the videos theyscroll to. Ads on mobile scrollable streams have traditionally not been“unskippable.” Users have always been able to scroll past ads. In-feedads generally have a lower view through rate (VTR) than in-stream ads.

Accordingly, in one implementation of the systems and methods discussedherein, providing content in a content list may include identifyingpositions within the list where content can be provided. A client agentmay automatically play items of content at a first position whendetermining that the first position is within a displayed region of thecontent list. The client agent may identify a duration during which thefirst item is within the displayed region of the list, pause playback ofthe first item at a point in time when the displayed region of the listis advanced to no longer include the first position, and compare thefirst duration to a threshold value. The client agent may determine thatthe displayed region of the list has advanced to a second position andresume playback of the first item near the point in time and at thesecond position if the duration is less than the threshold value.

One implementation disclosed herein is a method for providing videocontent in a content list. The method includes receiving, at a serverfrom a device, a request for a content list, identifying, by the server,a plurality of positions within the content list where video content canbe provided, and providing, by the server to the device, the contentlist for presentation to a user and a client agent for execution by thedevice. The client agent is configured to play items of content anddetermine that a first position of the plurality of positions is withina displayed region of the content list. The method also includesreceiving, by the server, a request from the device for a first item ofcontent transmitted in response to the determination that the firstposition of the plurality of positions is within the displayed region ofthe content list and providing, by the server, the first item of contentto the device for automatic playback at the first position within thecontent list. The client agent identifies a first duration during whichthe first item of content is within the displayed region of the contentlist, pauses playback of the first item of content at a point in time inresponse to the displayed region of the content list being advanced tono longer include the first position, and compares the first duration toa predetermined threshold value. The client agent also determines thatthe displayed region of the content list has advanced to a secondposition of the plurality of positions and, responsive to adetermination that the first duration is less than the predeterminedthreshold value, resumes playback of the first item of content near thepoint in time and at the second position of the content list.

In some implementations, the method includes comparing, by the server,the first duration to a monetization threshold different from thepredetermined threshold.

In some implementations, the method includes providing, by the server tothe device, a second item of content related to the first item ofcontent for playback at a third position in the content list, responsiveto a determination by the client agent that the first duration is lessthan the predetermined threshold.

In some implementations, the method further includes receiving, by theserver from the device, an identification of cumulative playback timecomprising a sum of the first duration and a second duration of playbackof the second item of content and comparing, by the server, thecumulative playback time to a monetization threshold.

In another aspect, the present disclosure is directed to a system fordisplaying video content in a content list. The system includes a devicehaving a display and a processor executing a client agent. The displayis configured to display a content list and the device is configured toreceive the content list from a server. The content list includes aplurality of positions where items of content can be provided. Theclient agent is configured to render the content list for display,determine that the content list has advanced such that a first positionof the plurality of positions is within a displayed region of thecontent list, and receive a first item of content transmitted from theserver in response to the determination that the first position of theplurality of positions is within a displayed region of the content list.The client agent is also configured to render the first item of contentfor automatic playback at the first position within the content list,identify a first duration that the first item of content is within thedisplayed region of the content list, and pause playback of the firstitem of content at a point in time in response to the displayed regionof the content list being advanced to no longer include the firstposition. The client agent is also configured to determine that thecontent list has advanced such that a second position of the pluralityof positions is within the display region of the content list, comparethe first duration to a predetermined threshold value, and render, atthe second position in response to the first duration being less thanthe predetermined threshold value, the first item of content forautomatic playback beginning near the point in time.

In some implementations, the device is configured to transmit the firstduration to the server. The server compares the first duration to amonetization threshold that is different from the predeterminedthreshold.

In some implementations, the device is configured to receive, from theserver responsive to a determination that the first duration is lessthan the predetermined threshold, a second item of content related tothe first item of content for playback at a third position in thecontent list.

In some implementations, the device is further configured to identify acumulative playback time comprising a sum of the first duration and asecond duration of playback of the second item of content and transmitthe cumulative playback time to the server. The server compares thecumulative playback time to a monetization threshold.

In some implementations, the device is configured to compare the firstduration to a second predetermined threshold, the second position nearerto the first position responsive to the first duration being greaterthan a second predetermined threshold and farther from the firstposition responsive to the first duration being less than the secondpredetermined threshold.

In still another aspect, the present disclosure is directed to a methodfor displaying video content on a device in a content list. The methodincludes receiving, by a device from a server, a content list comprisinga plurality of positions where items of content can be provided,rendering the content list for display, and determining, by a clientagent executed by the device, that the content list has advanced suchthat a first position of the plurality of positions is within adisplayed region of the content list. The method also includes receivinga first item of content transmitted from the server in response to thedetermination that the first position of the plurality of positions iswithin a displayed region of the content list, rendering the first itemof content for automatic playback at the first position within thecontent list, and identifying a first duration that the first item ofcontent is within the displayed region of the content list. The methodalso includes pausing playback of the first item of content at a pointin time in response to the displayed region of the content list beingadvanced to no longer include the first position, determining that thecontent list has advanced such that a second position of the pluralityof positions is within the display region of the content list, comparingthe first duration to a predetermined threshold value, and rendering, atthe second position in response to the first duration being less thanthe predetermined threshold value, the first item of content forautomatic playback beginning near the point in time.

In some implementations, the method also includes transmitting the firstduration to the server. The server comparing the first duration to amonetization threshold that is different from the predeterminedthreshold.

In some implementations, the method includes receiving, by the clientagent from the server, a second item of content related to the firstitem of content for playback at a third position in the content listresponsive to a determination that the first duration is less than thepredetermined threshold.

In some implementations, the method further includes identifying, by theclient agent, a cumulative playback time comprising a sum of the firstduration and a second duration of playback of the second item ofcontent. The method also includes transmitting, from the device to theserver, the cumulative playback time. The server compares the cumulativeplayback time to a monetization threshold.

In another aspect, the present disclosure is directed to a method forproviding video content in a content list. The method can includereceiving, at a server from a device, a request for a content list. Themethod can include identifying, by the server, a plurality of positionswithin the content list where video content can be provided. The methodcan include providing, by the server to the device, the content list forpresentation to a user and a client agent for execution by the device.The client agent can be configured to play items of content anddetermine that a first position of the plurality of positions is withina displayed region of the content list. The method can includeproviding, by the server, a first item of content to the device forautomatic playback at the first position within the content list. Theclient agent can pause playback of the first item of content at a pointin time in response to the displayed region of the content list beingadvanced to no longer include the first position. The client agent candetermine that the displayed region of the content list has advanced toa second position of the plurality of positions and can resume playbackof the first item of content near the point in time and at the secondposition of the content list.

In some implementations, the method can include providing, by the serverto the device, a second item of content related to the first item ofcontent for playback at a third position in the content list. In someimplementations, the method can include providing, by the server to thedevice, a second item of content unrelated to the first item of contentfor playback at the second position in the content list. In someimplementations, the method can include providing, by the server to thedevice, a second item of content for playback at a third position in thecontent list. The first and second item of content can be providedtogether.

In another aspect, the present disclosure is directed to a system fordisplaying video content in a content list. The system can include adevice including a display and a processor executing a client agent. Thedisplay can be configured to display a content list. The device can beconfigured to receive the content list from a server. The content listcan include a plurality of positions where items of content can beprovided. The client agent can be configured to render the content listfor display. The client agent can be configured to determine that thecontent list has advanced such that a first position of the plurality ofpositions is within a displayed region of the content list. The clientagent can be configured to receive a first item of content transmittedfrom the server in response to the determination that the first positionof the plurality of positions is within a displayed region of thecontent list. The client agent can be configured to render the firstitem of content for automatic playback at the first position within thecontent list. The client agent can be configured to pause playback ofthe first item of content at a point in time in response to thedisplayed region of the content list being advanced to no longer includethe first position. The client agent can be configured to determine thatthe content list has advanced such that a second position of theplurality of positions is within the display region of the content list.The client agent can be configured to render, at the second position,the first item of content for automatic playback beginning near thepoint in time.

In some implementations, the client agent can be configured to receive,from the server, a second item of content related to the first item ofcontent for playback at a third position in the content list. In someimplementations, the device can receive, from the server, a second itemof content unrelated to the first item of content for playback at thesecond position in the content list. In some implementations, the devicecan receive, from the server, a second item of content for playback at athird position in the content list. The first and second item of contentcan be received together.

In another aspect, the present disclosure is directed to a method fordisplaying video content on a device in a content list. The method caninclude receiving, by a device from a server, a content list comprisinga plurality of positions where items of content can be provided. Themethod can include rendering the content list for display. The methodcan include determining, by a client agent executed by the device, thatthe content list has advanced such that a first position of theplurality of positions is within a displayed region of the content list.The method can include receiving a first item of content transmittedfrom the server in response to the determination that the first positionof the plurality of positions is within a displayed region of thecontent list. The method can include rendering the first item of contentfor automatic playback at the first position within the content list.The method can include pausing playback of the first item of content ata point in time in response to the displayed region of the content listbeing advanced to no longer include the first position. The method caninclude determining that the content list has advanced such that asecond position of the plurality of positions is within the displayregion of the content list. The method can include rendering, at thesecond position, the first item of content for automatic playbackbeginning near the point in time.

In some implementations, the method can include receiving, by the clientagent from the server, a second item of content related to the firstitem of content for playback at a third position in the content list. Insome implementations, the method can include receiving, from the server,a second item of content unrelated to the first item of content forplayback at the second position in the content list. In someimplementations, the method can include receiving, by the device fromthe server, a second item of content for playback at a third position inthe content list. The first and second item of content can be receivedtogether.

In another aspect, the present disclosure is directed to a system fordisplaying video content in a content list. The system can include aserver configured to receive, from a device, a request for a contentlist. The server can be configured to identify a plurality of positionswithin the content list where video content can be provided. The servercan be configured to provide, to the device, the content list forpresentation to a user and a client agent for execution by the device.The client agent can be configured to play items of content anddetermine that a first position of the plurality of positions is withina displayed region of the content list. The server can be configured toreceive a request from the device for a first item of contenttransmitted in response to the determination that the first position ofthe plurality of positions is within the displayed region of the contentlist. The server can be configured to provide the first item of contentto the device for automatic playback at the first position within thecontent list. The client agent can identify a first duration duringwhich the first item of content is within the displayed region of thecontent list. The client agent can pause playback of the first item ofcontent at a point in time in response to the displayed region of thecontent list being advanced to no longer include the first position. Theclient agent can determine that the displayed region of the content listhas advanced to a second position of the plurality of positions and canresume playback of the first item of content near the point in time andat the second position of the content list.

In some implementations, the server can be further configured toprovide, to the device, a second item of content related to the firstitem of content for playback at a third position in the content list. Insome implementations, the server can be further configured to provide,to the device, a second item of content unrelated to the first item ofcontent for playback at the second position in the content list. In someimplementations, the server can be further configured to provide, to thedevice, a second item of content for playback at a third position in thecontent list, the first and second item of content provided together.

These implementations are mentioned not to limit or define the scope ofthe disclosure, but to provide an example of an implementation of thedisclosure to aid in understanding thereof. Particular implementationsmay be developed to realize one or more of the following advantages.

BRIEF DESCRIPTION OF THE DRAWINGS

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,aspects, and advantages of the disclosure will become apparent from thedescription, the drawings, and the claims, in which:

FIG. 1A is an illustration of display of and interaction with a contentlist, according to one implementation;

FIG. 1B is another illustration of display of and interaction with acontent list, according to one implementation;

FIG. 2A is a block diagram of a client device, according to oneimplementation;

FIG. 2B is a block diagram of a server device, according to oneimplementation;

FIG. 3A is a flow diagram of the steps taken in one implementation of aprocess for providing content into a content list; and

FIG. 3B is a flow diagram of the steps taken in one implementation of aprocess for providing content into a content list; and

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

A user's interaction with a stream, list, feed, or timeline of content,referred to generally as a list of content, may be monitored andadditional items content, such as advertising or other paid content, maybe inserted into the list at a position based on the user's interaction.Content may include videos (including user-created videos), pictures,audio recordings, text, interactive games, quizzes, or other suchcontent, and may be of any length. In some implementations, anapplication displaying the list of content, such as a web browser orapplication, may be configured to automatically play audio or videorecordings as they are displayed within a window, e.g. as a user scrollsthrough the list of content and/or pauses on an audio or videorecording.

The additional items of content may be associated with predeterminedpositions or locations identified in a content list for insertion of theitems of content. In one implementation, a video (e.g., anadvertisement) or series of videos can be played in the content listmultiple times so that a user who advances the display region (e.g., byscrolling) past the video watches a new part of the video (or the nextvideo in a series of videos) in a different slot of the feed. The watchtime of the user for each video in the feed that is part of the sameadvertising campaign is counted cumulatively toward a specificthreshold. A client engine, based on the amount of the video that wasviewed, determines if the user scrolled past a video because they werenot interested in the content or because they were trying to skip theadvertisement. If the user scrolls the video off screen before a minimumwatch time threshold is reached, then the video advertisement can beplaced in the next available advertisement content list position orslot.

Illustrated in FIG. 1A is one implementation of display of andinteraction with a list of content shown on a client 100. Client 100 maycomprise a mobile or portable computing device, such as a smart phone,tablet, or wearable computing device. In other implementations, client100 may comprise a desktop or laptop computer, a workstation computer,or any other type and form of computing device. Client 100 may comprisea display 102, which may, in many implementations, comprise a touchsensitive or multi-touch sensitive display. In other implementations,client 100 may include separate input devices (not illustrated), such asa mouse, keyboard, touch pad, voice command interface, scroll wheel, orany other such input device.

A display 102 may display a list of content 104. The list of content 104may be displayed by an application, such as a web browser or astand-alone application, such as a media viewer application, socialnetworking application, or other such application. In manyimplementations, the list of content 104 may be larger than or extendbeyond the display 102, and may be advanced or scrolled by a user toview other items of content within the list. Although shown as avertical one-dimensional list, in some implementations, the list ofcontent 104 may be two-dimensional and referred to as an array ofcontent and allow advancement or scrolling in multiple directions. Suchan array of content may comprise groups of content arranged in differentcolumns by genre, creator, length, type, date created, or any other suchidentifier. In still other implementations, the list of content 104 maybe three-dimensional, with additional classifications of contentprovided via depth.

The list of content 104 may include one or more items of content 106a-106 c, referred to generally as items of content 106 or first items ofcontent 106. Items of content 106 may comprise any type and form ofcontent, including video and/or audio recordings, pictures, text,animations, interactive games, quizzes, charts, or diagrams. Items ofcontent 106 may be of any length, such as 10 second animations or twohour movies. In many implementations, items of content 106 may beassociated with a corresponding title or caption 108 a-108 c, referredto generally as a title 108. In many implementations, the list ofcontent 104 may display a thumbnail or image representative of an itemof content 106, and responsive to the user scrolling the list 104 tofully display the representative thumbnail or image within display 102,the corresponding content item may be loaded and played. The list ofcontent may include still images from videos and as a user scrolls animage completely into display 102, the application may begin playing thevideo automatically. In some implementations, playback may pause if theuser continues scrolling and the content touches the edge of the display102; or may continue until the content has partially or completelyscrolled off of the display 102. The user may be allowed to scroll itemsof content off the display, pausing or skipping playback of the item ofcontent. In a further such implementation, the item of content may beremoved from the list responsive to such scrolling off the display.

As discussed above, paid items of content or other such items of content110 may be inserted into the list of content 104, and appear insertedbetween items of content 106. In the illustration of FIG. 1A, an item ofcontent 110 has been inserted at a position 107 between a content item106 b and a content item 106 c. Items of content 110 may be referred toas second items of content, paid content, interstitial content, insertedcontent, or by any other such term. In many implementations, an item ofcontent 110 may have an associated title or caption 112, as shown. Aswith items of content 106, items of content 110 may comprise any typeand form of content, including video and/or audio recordings, pictures,text, animations, interactive games, quizzes or surveys, charts,diagrams, engagement advertisements, social advertisements, searchadvertisements, carousel advertisements, or application installationadvertisements. Similarly, as discussed above, items of content 110 maybe displayed as thumbnails or static images and/or may be automaticallyplayed subsequent to playback of an associated item of content 106. Insome implementations, a user may select an item of content 110 to loadan associated web page in a web browser or other application, or mayflag the item of content 110 for subsequent review and loading ofassociated web pages.

As shown, a user may scroll the list of content 104 to view differentcontent items 106 in a direction of scrolling 114. Although shownpointing downwards, as discussed above, in many implementations, theuser may scroll either upwards or downwards, or in some implementations,left or right and/or forwards and backwards in a z-plane. Accordingly,the direction of scrolling 114 may refer to a present or most recentdirection of scrolling. In the illustration of FIG. 1A, the user hasscrolled the list of content 104 downwards, such that content item 106 ais almost completely moved off the top of the display 102 and contentitem 106 c has appeared at the bottom of the display 102. Responsive tothe direction of scrolling 114, a content item 110 (and associated title112) has been inserted into the list of content 104 at a position 107subsequent to content item 106 b (and associated title 108 b) as shown.As discussed above, content item 110 may be inserted into a position 107in the list responsive to the user scrolling through the list 104 andpausing to view content item 106 b, and accordingly, is inserted at aposition subsequent to content item 106 b in the direction of scrolling114. Conversely, if the user had been scrolling upwards and paused oncontent item 106 b, in such implementations, content item 110 would beinserted into the list at a position 107 between content item 106 a andcontent item 106 b. In some implementations, the direction of scrollingmay be considered a parameter-value pair (e.g. “scrolling-upwards” orvia similar identifiers) and may be transmitted in requests and/orresponses or stored in memory as such. In other implementations, thedirection of scrolling may be identified via a bit or flag set to apredetermined value for a location. In still other implementations, thedirection of scrolling may be identified via a vector, with a lengthidentifying a speed or rate of scrolling.

Although a single item of content 110 is illustrated in FIG. 1A, in someimplementations, multiple positions or locations 107 or each position107 between each item of content (e.g., items of content 106 a, 106 b,and 106 c) may have an item of content 110 inserted. Each content item110 may display the same content as the previous content item 110,related content to the previous content item 110, or unrelated contentto the previous content item 110. Similar to content items 106 a, 106 b,and 106 c, content items 110 may be paused when it is advanced orscrolled out of the displayed region. In some implementations, playbackof content items 110 may automatically resume when they are brought backinto the display region or into focus.

In some implementations, client 100 may identify the duration that eachcontent item 110 was played or viewed. Client 100 may compare theduration to a threshold value associated with a minimum ad impressiontime. If the duration is greater than the threshold value, then thecontent of the content item 110 provided at the next location 107 may beunrelated to the previous content item 110. If the duration is less thanthe threshold value, then the content item 110 inserted at the nextlocation 107 may be the same as the previous content item 110 and resumeplayback of the content.

In some implementations, if the duration is less than the thresholdvalue, then the content item 110 inserted at the next location 107 maybe different than but related to the previous content item 110 (e.g., avideo in a series of videos or in the same advertisement campaign). Theduration of playback or viewing for each content item 110 that isrelated is summed together as a cumulative playback or viewing time. Thecontent item 110 at the next location 107 may be a related content item110 until the cumulative playback time exceeds a predetermined thresholdof time.

Referring briefly to FIG. 1B, illustrated is another implementation of adisplay 102′ showing a list of content 104. Display 102′ may comprise anapplication window, such as a window of a web browser, social networkingapplication, or other such application, a full screen window, or anyother such display. Display 102′ may be presented by a computing device,such as a desktop computer, laptop computer, tablet computer, smartphone, wearable computer, or any other type and form of computingdevice. In some implementations, as shown, a display 102′ may include amenu bar 116, which may comprise fields or user interface items forsearching for content or other users, viewing user profiles, etc.Display 102′ may also include a sub-frame 118 or display of calendarevents, invitations, additional information or content, as well as othersuch features. Although shown scrolling vertically as in FIG. 1A, thelist of content 104 may scroll horizontally, or may be a two or threedimensional array and scroll vertically, horizontally, and/or forwardsand backwards in a z-plane. In some implementations, as shown in FIG.1B, each content item 106 a may be further associated with one or moreuser comments 120 a-120 b, referred to generally as comments 120.Comments 120 may be submitted by the user or other users viewing thecorresponding item of content, and may be displayed in full, truncated,linked, or otherwise shown. As shown in FIG. 1B and similar to FIG. 1A,a content item 110 may be inserted into the list of content 104 in aposition subsequent to a content item 106 (and associated title 108and/or comments 120) in a direction of scrolling 114, responsive tointeraction with the content item 106.

A direction of scrolling 114 may refer to a direction in which a visibleportion of the list of content 104 shown within display 102, 102′ movesacross the list, rather than a direction of user interaction with thelist, which may be variable dependent on operating system or applicationconfiguration. In one implementation, a user may move a scroll bardownwards, while in another implementation, the user may swipe a fingerupwards on the list, with both interactions resulting in the displayshowing a portion of the list further down the list, or scrolling thelist downwards.

As discussed above, a content item 106 in the list of content 104 may beassociated with the inserted item of content 110 at a position 107. Thisassociation may be used for revenue sharing, audience measurement, orother such purposes, as well as personalized selection of content 110based on one or more characteristics of content item 106 (e.g. genre,keywords, subject, etc.). Similarly, as discussed above, content item110 may be inserted in a position 107 subsequent to the associatedcontent item 106, such that the inserted item is “next” or appears afterthe related content item 106. In many implementations, content item 110may be inserted to appear at a position 107 immediately subsequent tothe associated content item 106, while in other implementations, contentitem 110 may be inserted at a position 107 farther along in the list,responsive to an average speed of scrolling of the list or an averagerate of user interaction with the list. As used herein, both positions107 immediately subsequent to the associated content item and fartheralong in the list in the same direction may be referred to as subsequentor adjacent positions 107 in the list. Horizontal scrolling, as well astwo or three-dimensional scrolling may also be considered, with thecontent item 110 inserted at a position 107 along a vector of the mostrecent scrolling direction.

Illustrated in FIG. 2A is a block diagram of one implementation of acomputing device 200 of a client, such as client 100 or a deviceproviding a display 102, 102′. Client device 200 may be any number ofdifferent types of user electronic devices configured to communicate viaa network, including without limitation, a laptop computer, a desktopcomputer, a tablet computer, a smartphone, a digital video recorder, aset-top box for a television, a video game console, or any other typeand form of computing device or combinations of devices. In someimplementations, the type of client device 200 may be categorized as amobile device, a desktop device or a device intended to remainstationary or configured to primarily access a network via a local areanetwork, or another category of electronic devices such as a mediaconsumption device.

In many implementations, client device 200 includes a processor 202 anda memory 204. Memory 204 may store machine instructions that, whenexecuted by processor 202 cause processor 202 to perform one or more ofthe operations described herein. Processor 202 may include amicroprocessor, ASIC, FPGA, etc., or combinations thereof. In manyimplementations, processor 202 may be a multi-core processor or an arrayof processors. Memory 202 may include, but is not limited to,electronic, optical, magnetic, or any other storage devices capable ofproviding processor 202 with program instructions. Memory 202 mayinclude a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM,RAM, EEPROM, EPROM, flash memory, optical media, or any other suitablememory from which processor 202 can read instructions. The instructionsmay include code from any suitable computer programming language suchas, but not limited to, C, C++, C#, Java, JavaScript, Perl, HTML, XML,Python and Visual Basic.

Client device 200 may include one or more network interfaces 206. Anetwork interface 206 may include any type and form of interface,including Ethernet including 10 Base T, 100 Base T, or 1000 Base T(“Gigabit”); any of the varieties of 802.11 wireless, such as 802.11a,802.11b, 802.11g, 802.11n, or 802.11ac; cellular, including CDMA, LTE,3G, or 4G cellular; Bluetooth or other short range wireless connections;or any combination of these or other interfaces for communicating with anetwork or other computing devices. In many implementations, clientdevice 200 may include a plurality of network interfaces 206 ofdifferent types, allowing for connections to a variety of networks, suchas local area networks or wide area networks including the Internet, viadifferent sub-networks.

Client device 200 may include one or more user interface or input/outputdevices 208. A user interface device 208 may be any electronic devicethat conveys data to a user by generating sensory information (e.g., avisualization on a display 102, 102′, one or more sounds, tactilefeedback, etc.) and/or converts received sensory information from a userinto electronic signals (e.g., a keyboard, a mouse, a pointing device, atouch screen display, a microphone, etc.). The one or more userinterface devices may be internal to the housing of client device 200,such as a built-in display, touch screen, microphone, etc., or externalto the housing of client device 200, such as a monitor connected toclient device 200, a speaker connected to client device 200, etc.,according to various implementations.

Client device 200 may include in memory 204 an application 210 or mayexecute an application 210 with a processor 202. Application 210 may bean application, applet, script, service, daemon, routine, or otherexecutable logic for receiving content and for transmitting responses,commands, or other data. In one implementation, application 210 may be aweb browser, while in another implementation, application 210 may bemedia presentation application. Application 210 may includefunctionality for displaying content received via network interface 206and/or generated locally by processor 202, and for transmittinginteractions received via a user interface device 208, such as requestsfor websites, selections of survey response options, input text strings,etc.

In some implementations, application 210 may include a client agent 212.Client agent 212 may include an application plug-in, applicationextension, subroutine, browser toolbar, daemon, or other executablelogic for collecting data processed by application 210 and/or monitoringinteractions of a user with an interface 208. In other implementations,client agent 212 may be a separate application, service, daemon,routine, or other executable logic separate from application 210 butconfigured for intercepting and/or collecting data processed byapplication 210, such as a screen scraper, packet interceptor, APIhooking process, or other such application. Client agent 212 may beconfigured for intercepting or receiving data input via user interfacedevice 208, including mouse clicks, scroll wheel movements, gesturessuch as swipes, pinches, or touches, or any other such interactions; aswell as data received and processed by application 210 including contentdisplayed or media played, duration of playback, as well as interactionswith playback controls including pausing, resetting or restarting, fastforwarding, muting, or any other such interactions. Client agent 212 mayidentify streamed multimedia content received by a client device, suchas a television show, movie, song, music video, or other such content.Content may be identified based on identifier tags including ID3 tags orother such metadata, uniform resource locators (URLs) or uniformresource identifiers (URIs), filenames, captions, titles, or any othertype and form of data accompanying the content. Client agent 212 mayidentify or track playback or view time durations or cumulative playbacktimes of content items 110. Client agent 212 may compare the durationsor playback times to predetermined thresholds and determine what contentitem 110 to insert at a next position 107 based on the comparison.

Client 200 may include or be identified with a device identifier 214.Device identifier 214 may include any type and form of identification,including without limitation a MAC address, text and/or numerical datastring, a username, a cryptographic public key, cookies, device serialnumbers, user profile data, network addresses, or any other suchidentifier that may be used to distinguish the client 200 from otherclients 200. In some implementations, a device identifier 214 may beassociated with one or more other device identifiers 214 (e.g., a deviceidentifier for a mobile device, a device identifier for a home computer,etc.). In many implementations, to preserve privacy, the deviceidentifier 214 may be cryptographically generated, encrypted, orotherwise obfuscated. In some implementations, client 200 may include asession identifier 216, which may be similar to a device identifier 214but generated more frequently, such as hourly, daily, upon activation ofapplication 210, or any other such period. Session identifiers 216 maybe generated by a client device 200 or received from a server, contentprovider, or other device. Session identifiers 216 may be used in placeof device identifiers 214 to increase anonymity, or may be used inconnection with device identifiers 214 to distinguish interactions ofone session from those of another session.

Referring now to FIG. 2B, illustrated is a block diagram of animplementation of a computing device or server 218, such as a contentprovider. As with client devices 200, server 218 may include one or moreprocessors 202, memories 204, network interfaces 206, and userinterfaces 208. In some implementations referred to as headless servers,a server 218 may not include a user interface 208, but may communicatewith clients 200 with user interfaces 208 via a network. Memory 204 mayinclude first content storage 224 for storing content for inclusion in alist 104, such as storage of webpages, images, audio files, video files,data files, or any other type and form of data. Memory 204 may alsoinclude second content storage 224 for storing content to be inserted,responsive to detected interactions, into a list 104 populated withcontent from first content storage 224. In some implementations, memory204 may store one or more applications 210 (not illustrated) forexecution by processor 202 of the server 218, including FTP servers, webservers, mail servers, file sharing servers, peer to peer servers, orother such applications for delivering content stored in content storage224, 226.

In some implementations, a server 218 may execute a presentation engine220. Presentation engine 220 may comprise an application, service,server, daemon, routine, or other executable logic for presenting orproviding a list of items of content to a client device, includingcontent identifiers. In some implementations, presentation engine 220may select one or more items of content from first content storage 224responsive to a request for a list of content received from a clientdevice. Such requests may include identifiers of content to be includedin the list, including keywords, creator names, genres, types, etc.Presentation engine 220 may retrieve identifications of correspondingfirst items of content and assemble the list for transmission to clientdevice 200. In some implementations, the list may be assembled as an XMLfile or HTML file, while in other implementations, the list may beassembled in any other encoding type or format for interpretation by anapplication on client device 200. Presentation engine 220 may, in someimplementations, receive identifications of one or more second items ofcontent to be included in a list and identifications of correspondingone or more first items of content currently in the list and associatedwith the selected one or more second items of content, and regenerate ormodify the list to include the identified one or more second items ofcontent at positions subsequent to the corresponding one or more firstitems of content in a direction of scrolling of the list. In otherimplementations, identifications of the second item of content andcorresponding first item of content may be transmitted to client device200. Application 210 and/or client agent 212 may modify apreviously-received list 104 to include the received identification ofthe second item of content at a position subsequent to the correspondingfirst item of content in the direction of scrolling. This may reduceprocessing requirements on server 218 and the need to retransmit theentire list for display, as well as reducing data required to be sent toserver 218. In one such implementation, responsive to detecting aninteraction with a first item of content, application 210 may request asecond item of content for inclusion in the list from server 218, therequest including an identification of the first item of content. Theserver 218 may select a second item of content based on characteristicsof the first item of content, and transmit a response identifying thesecond item of content to the client 200. The application 210 may thenmodify the list to include the identification of the second item ofcontent in a position subsequent in a direction of scrolling to thefirst item of content. Accordingly, such modification functions may beperformed by application 210 rather than presentation engine 220 in suchimplementations.

In some implementations, server 218 may execute a content selectionengine 222. A content selection engine 222 may comprise an application,service, routine, server, daemon, or other executable logic forselecting content from first content storage 224 and/or second contentstorage 226 responsive to a request comprising one or more identifiers.A request for a list of content may include a device identifier, useridentifier, session identifier, keyword, genre, type, creator, creationdate, unwatched flag, or any other type and form of identification orcharacteristic. Content selection engine 222 may identify one or moreitems of content in first content storage 224 matching thecharacteristics or identifiers in the request, and may provide theidentifications to presentation engine 220 for inclusion in thegenerated list. In some implementations, content selection engine 222may limit the number of identified items of content, returning 10, 20,50 or any other predetermined number of items. Content selection engine222 may similarly select an item of content from second content storage226 responsive to a request from a client generated upon detection of aninteraction with a first item of content displayed by an application ofthe client. Content selection engine 222 may select an item of contentfrom content storage 226 based on one or more characteristics of thefirst item of content including genre, type, title, keywords, creator,creation date, or any other such information. In one implementation, afirst item of content may be a brief video about a sporting event.Content selection engine 222 may select a second item of content relatedto the sport for inclusion in the list, with viewers of the first itemof content likely to be interested in the second item of content.

In some implementations, a server 218 may execute a payment engine 228.Payment engine 228 may comprise an application, service, server, daemon,routine, or other executable logic for associating a creator, publisher,distributor, or sponsor of a first item of content with a paid seconditem of content inserted into a list responsive to a detectedinteraction with the first item of content. Payment engine 228 mayprovide revenue sharing from creators or publishers of paid content,such as advertising, to creators of popular first items of content thatdraw viewers, and/or indicate to a third-party payment system to providepayments and/or revenue sharing for such interactions. In someimplementations, payment engine 228 may maintain a record or log ofwhich items of content were interacted with, device identifiers ofclients that interacted with the items, second items of content thatwere provided for inclusion in displayed lists, identifications ofwhether the second items of content were interacted with, etc. Paymentengine 228 may compare durations of playback or viewing time to amonetization threshold to determine whether the item of content wasviewed for a sufficient amount of time to charge the creator orpublisher of paid content.

FIG. 3A is a flow chart of one implementation of a method 300 forselective insertion of additional content (e.g., content items 110) intoa list of items of content (e.g., content list 104). As shown, a portionof method 300 may be performed by a first device, such as a contentprovider or server, while a second portion of method 300 may beperformed by a second device, such as a client device. In otherimplementations, the method may be divided differently than illustrated,with a greater or fewer number of steps performed by each device, orwith steps performed by other devices not illustrated.

At step 301, the second device (e.g., a client device) may request acontent list from a first device (e.g., a server or content provider),for example through a web browser or other application executing on thesecond device. The request may be for content matching of a keyword,from a particular content creator or group of creators, for matching agenre, for content created within a recent time period, or any othersuch characteristics. At step 302, the first device may select one ormore items of content for inclusion in a list. As discussed above, insome implementations, the first device may limit the number of resultsto a predetermined number, such as 10, 20, 50, or any other number ofresults, to reduce bandwidth, memory, and processor requirements. Thefirst device generates the list of content and, at step 303, mayidentify the selected items and positions (e.g., positions 107) betweencontent items (e.g., content items 106) where other content items (e.g.,content items 110) can be inserted. At step 304, the list may betransmitted to the second device. The list may include an identificationof each item of content, such as a uniform resource identifier (URI) ofthe item of content; a uniform resource locator (URL) or address fromwhich the item of content may be retrieved; a URL or address from whicha thumbnail or static image representative of the content may beretrieved; a title or caption of the item of content; one or morecomments from other users that have viewed the item of content; a sizeof the item of content; a type of the item of content; and/or any otherinformation about each item of content. The list may be an XML list, anHTML file including the list, a database, a flat file, or any other typeand form of data.

At step 306, the second device may receive and display or render thelist. The list may be received via any type and form of network, such asthe Internet, and may be cached in memory and/or executed or interpretedby an application executed by the second device, such as a browser ormedia display application. In some implementations, a portion of thelist may be displayed, such as identifications of a first few items ofcontent of the list. Display of the list may comprise display of staticimages or thumbnails of pictures or videos, which may be retrievedseparately or generated by the second device. The second device mayreceive the list and request thumbnails representative of content in thelist, based on identified locations for the thumbnails in the list data.The thumbnails may be cached and displayed by the application, withcontent retrieved in the background and cached or retrieved dynamicallyin response to interaction by a user with the content.

At step 308, the device may determine whether a first identifiedposition is being displayed by or is within the display region of thesecond device, such as by detecting an interaction with an item ofcontent or the content list. Interactions may include scrolling oradvancing the content list. As discussed above, the list may be scrolledvia a scroll box, directional button, scroll wheel, touch gesture, voicecommand, or any other such interaction. If the first identified positionis displayed, at step 310, the second device may request an item ofcontent from the first device for insertion into the content list at thefirst position. The second device may not request the item of content ifthe item has previously been received (e.g., the user scrolled to aprevious point in the list).

At step 312, the first device may receive the request for the seconditem of content. The request may include an identification of a nearbyitem of content, characteristics of the nearby item of content, and/or ascrolling direction of the list. At step 314, the first device mayselect the item of content for insertion based on the data in therequest, based on user data or a user profile, or based on aprioritization of items of content for insertion and transmit the itemof content to the second device. As discussed above, in someimplementations, a content selection engine executed by the first devicemay retrieve one or more characteristics of the first item of contentand search in a database for a second item of content havingcorresponding values for the one or more characteristics, such as amatching genre, keyword, creator, etc. In other implementations, thecontent selection engine may receive the characteristics from the seconddevice and may search in the database for an item of content havingcorresponding values. The first device may transmit an identification ofthe item of content in response to the request, such identificationincluding a title of the item of content; a URL of the second item ofcontent; a URL or address from which the second item of content may beretrieved; a URL or address from which a thumbnail or static imagerepresentative of the second item of content may be retrieved; a titleor caption of the second item of content; one or more comments fromother users that have viewed the item of content; a size of the item ofcontent; a type of the item of content; and/or any other informationabout the item of content.

As discussed above, at step 316, the second device may insert anddisplay or render the item of content in a first position in the listidentified by the first device. The insertion may be based on thereceived identification of scrolling of the list, and may modify thelist to include the second item of content at a position subsequent tothe first item of content in the direction of scrolling. In someimplementations in which the second device displays the list via a webbrowser, the list may be updated on the server and transmit the updatedlist to the client for display rather than modifying the displayed pageon the client. The second device may select a position in the list basedon the received identification of scrolling of the list, and may modifythe list to include the second item of content at a position subsequentto the first item of content in the direction of scrolling. As discussedabove, such implementations do not require transmission of the directionof scrolling to the server, and may require less processing andbandwidth on the part of the server. As discussed above, in someimplementations, the selected position in the list for insertion of thesecond item of content may be immediately subsequent to the first itemof content, or may be displaced from the first item of content by one ormore entries, such as based on a rate of scrolling of the list.

At step 318, the second device tracks the position of the content listthat is in the display region. When the second device identifies thatthe first position where the inserted content item is being played is nolonger within the displayed region, the device pauses playback of thecontent item at a point in time. The second device also identifies aduration that the content item played before being paused.

The duration information and an identification of the content item maybe sent to the first device for further analysis. At a step 320, wherethe content item is an advertisement or other paid content, the firstdevice compares the duration that the item was played to a monetizationthreshold (e.g., 15 seconds, 30 seconds, etc.). If the duration is lessthan the monetization threshold, the content creator or publisher maynot be charged for the display of the advertisement. If the duration isgreater than the monetization threshold, the content creator orpublisher may be charged for display of the advertisement.

At step 322, the second device determines that the content list hasadvanced a second identified position within the display region of thecontent list where an item of content can be inserted. At step 324, thesecond device compares the duration that the previously inserted item ofcontent played with a predetermined threshold value. In someimplementations the threshold value may be two seconds, but in otherimplementations the threshold value may be one second, three seconds,ten seconds, or some other value.

If the duration or watch time is less than or equal to the threshold,the second device may determine that the user scrolled past the insertedcontent item without watching it. If the duration is less than thethreshold, the same content item may be rendered or displayed (step 316)at the next position. If the same content item is shown again, the itemmay resume playback at the point at or near where it was initiallypaused in step 318. If the duration is greater than the threshold, thesecond device may determine that the user either started watching thecontent item and decided he was not interested in the content or watchedthe content item until completion indicating that he was interested inthe content. If the duration is greater than the threshold, the seconddevice the second device may return to step 310 and request a new itemof content. The second device may also remove other occurrences of thecontent item from the content list.

In some implementations where the content item is an advertisement, thesecond device may play the same content item again even if the durationis greater than the threshold if the duration is not greater than amonetization threshold. In one implementation the monetization thresholdmay be 30 seconds, but in other implementations the monetizationthreshold may be 15 seconds, 20 seconds, or some other value. After theuser watched the advertisement for a duration longer than themonetization threshold, the advertiser may be charged. If the userwatched the advertisement for a duration longer than the threshold butless than the monetization threshold (e.g., enough to show an interestin the ad, but not enough to count towards monetization), the seconddevice may show the advertisement again at a later position and resumewhere the advertisement was paused. The advertisement may be provided toan advertisement auction for the next impression slot in the feed. Theeffective cost per thousand impressions (eCPM) for this impression slotmay be adjusted based on the probability that the user watches enough ofthe advertisement to pass the monetization threshold. The probabilitymay be calculated based on a default probability for the advertisementplus an adjustment based on how much of the advertisement the user hasalready viewed and the number of impressions of the advertisement. Theadjustment may be calculated from previous trials and the process canrepeat as long as the eCPM for the video causes the ad campaign to winthe auction. Typically, as the viewing time increases the eCPMincreases, but as the number of impressions increases the eCPMdecreases.

FIG. 3B is a flow chart of one implementation of a method 300′ forselective insertion of additional content (e.g., content items 110) intoa list of items of content (e.g., content list 104). Method 300′ issimilar to method 300, but rather than resuming a content item when theduration is less than the threshold, a new content item that is relatedto the previously inserted content item may be displayed. In someimplementations, both the method 300 and the method 300′ may beindividually executed by the same devices or combined into a singlemethod. That is, content items may be either resumed or a new relatedvideo may be played, if one exists, when the duration is less than thethreshold.

In some implementations, the first device may decrease content listlatency by providing multiple related content items for display in thefeed list under different conditions (e.g., a user watched greater thanor less than a threshold amount of the first content item). The seconddevice may use the conditions to determine which ad impression to show.Therefore, the user may be able to scroll through or advance the contentlist with reduced lag.

After rendering the first inserted content item (step 316), at step318′, the second device tracks the position of the content list that isin the display region. When the second device identifies that the firstposition where the inserted content item is being played is no longerwithin the displayed region, the device pauses playback of the contentitem at a point in time. The second device also identifies a cumulativeplayback time or cumulative duration that the content item and anyrelated content items played before being paused. The cumulativeplayback time may be a sum of the duration s of each related contentitem or a sum of the duration of a content item and a the previouscumulative playback time. In some implementations, the cumulative watchtime may only be incremented if the duration for a content item isgreater than an individual threshold (e.g., 2 seconds, 3 seconds, etc.).

Related content items may include a series of videos such as for anadvertising campaign, but may also include any other series of contentitems that have some relation with each other based on subject matter,source, target, etc. In some implementations, the advertisements may beselected for content item slots based on a manipulated eCPM process. Theprocess may adjust the eCPM based on one or more of the amount ofcumulative playback time a user has watched from the ad campaign, thenumber of advertisements already displayed to the user, the number ofadvertisements in the campaign, and the likelihood that a user will seemore advertising content items in the content list. In someimplementations, the content list may only provide content items thatare the highest rated items (e.g., most viewed, scored by users, etc.).When the content list displays all such content, it may display oldercontent. Therefore, the content list feed may be finite and the numberof content items a user may scroll through in a content list may bepredictable.

Typically, advertisement slots in a content list are predeterminedbefore selecting the advertisement to diversify the mixture of organicand promoted content. In some implementations, subsequent impressions ofadvertisements from the same campaign may not be as invasive as showinga new advertisement and therefore more video ad slots may be added intothe content list. If the user watches several seconds of a firstadvertisement in a campaign, the next advertisement in the campaign maybe inserted 1, 2, or 3 list items down from the current position insteadof further down at position number 4. Because in-feed advertisements aretypically not related to the content they are mixed with, the otheradvertising slots may be shifted appropriately.

In some implementations, the first device may decrease content listlatency by providing multiple related content items for display in thefeed list under different conditions (e.g., a user watched greater thanor less than a threshold amount of the first content item). The seconddevice may use the conditions to determine which ad impression to show.Therefore, the user may be able to scroll through or advance the contentlist with reduced lag.

The cumulative playback time information and an identification of thecontent item(s) may be sent to the first device for further analysis. Ata step 320′, where the content item is an advertisement or other paidcontent, the first device compares the cumulative playback time that aseries of content items in an ad campaign were played to a monetizationthreshold (e.g., 15 seconds, 30 seconds, 1 minute, etc.). If theduration is less than the monetization threshold, the content creator orpublisher may not be charged for the display of the advertisement. Ifthe duration is greater than the monetization threshold, the contentcreator or publisher may be charged for display of the advertisement. Insome implementations, the content creator or publisher ad campaign maybe charged when a certain number of videos from an advertising campaignhave each had a duration greater than an individual threshold (e.g., 2seconds, 3 seconds, etc.).

At step 322, the second device determines that the content list hasadvanced a second identified position within the display region of thecontent list where an item of content can be inserted. At step 324, thesecond device compares the cumulative playback time that the relateditems of content played with a predetermined threshold value. In someimplementations the threshold value may be two seconds, but in otherimplementations the threshold value may be one second, three seconds,ten seconds, twenty seconds, or some other value.

If the cumulative playback time is less than or equal to the threshold,the second device may determine that the user scrolled past the insertedcontent item without watching it. If the cumulative playback time isless than the threshold, the next related content item may be renderedor displayed, at a step 326, at the next position. The second device thecontinues to track the content item at step 318′. If the cumulativeplayback time is greater than the threshold, the second device maydetermine that the user either started watching the content item anddecided he was not interested in the content or watched the content itemuntil completion indicating that he was interested in the content. Ifthe cumulative playback time is greater than the threshold, the seconddevice the second device may return to step 310 and request a new itemof content. The second device may also remove other occurrences of therelated content items from the content list.

Similar to method 300, in some implementations where the content item isan advertisement, the second device may play the next content item in anadvertising campaign even if the cumulative playback time is greaterthan the threshold if the cumulative playback time is not greater than amonetization threshold.

Accordingly, the systems and methods discussed herein provide dynamicmonitoring of interaction of a user with a list of content items,including automatically playing media, and insertion of paid contentitems at positions selected responsive to the interactions of the user,such that the user may be more likely to view the paid content. Thesesystems further provide for association of inserted paid content withoriginal content creators, allowing for incentivization of creation ofpopular content through revenue sharing or similar models.

In many implementations, data collected about a user may be anonymizedor disambiguated to protect privacy. In many implementations in whichpersonal information about the user of client device may be collectedfor measurement or used to select third-party content, the user may beprovided with an opportunity to control whether programs or featuresthat may collect personal information (e.g., information about a user'ssocial network, social actions or activities, a user's preferences, or auser's current location) do so, or an opportunity to control whether orhow to transmit measurement data to an audience measurement serverand/or panel provider. In addition, certain data may be treated in oneor more ways before it is stored or used by an audience measurementserver, so that personally identifiable information is removed whengenerating parameters (e.g., demographic parameters). A user's identitymay be anonymized so that no personally identifiable information can bedetermined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over howinformation is collected about him or her and used by the audiencemeasurement servers, panel providers, and content providers.

Implementations of the subject matter and the operations described inthis specification can be implemented in digital electronic circuitry,or in computer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Implementations of the subjectmatter described in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on one or more computer storage medium forexecution by, or to control the operation of, data processing apparatus.Alternatively or in addition, the program instructions can be encoded onan artificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate components or media (e.g., multiple CDs, disks, or otherstorage devices). Accordingly, the computer storage medium may betangible.

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “client or “server” include all kinds of apparatus, devices,and machines for processing data, including a programmable processor, acomputer, a system on a chip, or multiple ones or combinations, of theforegoing. The apparatus can include special purpose logic circuitry,e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit). The apparatus can alsoinclude, in addition to hardware, code that creates an executionenvironment for the computer program in question, e.g., code thatconstitutes processor firmware, a protocol stack, a database managementsystem, an operating system, a cross-platform runtime environment, avirtual machine, or a combination of one or more of them. The apparatusand execution environment can realize various different computing modelinfrastructures, such as web services, distributed computing and gridcomputing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include bothgeneral and special purpose microprocessors, and any one or moreprocessors of any kind of digital computer. Generally, a processor willreceive instructions and data from a read-only memory or a random accessmemory or both. The essential elements of a computer are a processor forperforming actions in accordance with instructions and one or morememory devices for storing instructions and data. Generally, a computerwill also include, or be operatively coupled to receive data from ortransfer data to, or both, one or more mass storage devices for storingdata, e.g., magnetic, magneto-optical disks, or optical disks. However,a computer need not have such devices. Moreover, a computer can beembedded in another device, e.g., a mobile telephone, a personal digitalassistant (PDA), a mobile audio or video player, a game console, aGlobal Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), OLED (organic light emitting diode), TFT (thin-filmtransistor), plasma, other flexible configuration, or any other monitorfor displaying information to the user and a keyboard, a pointingdevice, e.g., a mouse, trackball, etc., or a touch screen, touch pad,etc., by which the user can provide input to the computer. Other kindsof devices can be used to provide for interaction with a user as well;feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; e.g., by sending webpages to a web browser on a user'sclient device in response to requests received from the web browser.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front-endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back-end, middleware, or front-endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Communication networks can include various combinations of alocal area network (“LAN”), a wide area network (“WAN”), aninter-network (e.g., the Internet), and peer-to-peer networks (e.g., adhoc peer-to-peer networks).

The features disclosed herein may be implemented on a smart televisionmodule (or connected television module, hybrid television module, etc.),which may include a processing circuit configured to integrate Internetconnectivity with more traditional television programming sources (e.g.,received via cable, satellite, over-the-air, or other signals). Clientdevices receiving content and providing relay pings, identifiers, orother data to an audience measurement service and/or panel provider maybe smart television modules. The smart television module may bephysically incorporated into a television set or may include a separatedevice such as a set-top box, Blu-ray or other digital media player,game console, hotel television system, and other companion device. Asmart television module may be configured to allow viewers to search andfind videos, movies, photos and other content on the web, on a localcable TV channel, on a satellite TV channel, or stored on a local harddrive. A set-top box (STB) or set-top unit (STU) may include aninformation appliance device that may contain a tuner and connect to atelevision set and an external source of signal, turning the signal intocontent which is then displayed on the television screen or otherdisplay device. A smart television module may be configured to provide ahome screen or top level screen including icons for a plurality ofdifferent applications, such as a web browser and a plurality ofstreaming media services, a connected cable or satellite media source,other web “channels”, etc. The smart television module may further beconfigured to provide an electronic programming guide to the user. Acompanion application to the smart television module may be operable ona mobile computing device to provide additional information aboutavailable programs to a user, to allow the user to control the smarttelevision module, etc. In alternate implementations, the features maybe implemented on a laptop computer or other personal computer, asmartphone, other mobile phone, handheld computer, a tablet PC, or othercomputing device.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking orparallel processing may be utilized.

1. A method for providing video content in a content list, comprising:receiving, at a server from a device, a request for a content list, thecontent list comprising identifications of a plurality of content items;identifying, by the server, a plurality of positions within the contentlist where video content can be provided; providing, by the server tothe device, the content list for presentation to a user and a clientagent for execution by the device, the client agent configured to playitems of content and determine that a first position of the plurality ofpositions is within a displayed region of the content list; providing,by the server, a first item of content to the device for automaticplayback at the first position within the content list, the client agentpausing playback of the first item of content at a point in time inresponse to the displayed region of the content list being advanced tono longer include the first position, the client agent determining thatthe displayed region of the content list has advanced to a secondposition of the plurality of positions and resuming playback of thefirst item of content near the point in time and at the second positionof the content list.
 2. The method of claim 1, further comprisingproviding, by the server to the device, a second item of content relatedto the first item of content for playback at a third position in thecontent list.
 3. The method of claim 1, further comprising providing, bythe server to the device, a second item of content unrelated to thefirst item of content for playback at the second position in the contentlist.
 4. The method of claim 1, further comprising providing, by theserver to the device, a second item of content for playback at a thirdposition in the content list, the first and second item of contentprovided together.
 5. A system for displaying video content in a contentlist, comprising: a device comprising a display and a processorexecuting a client agent, the display configured to display a contentlist, the device configured to receive the content list from a server,the content list comprising identifications of a plurality of items ofcontent and a plurality of positions where the plurality of items ofcontent can be provided; wherein the client agent is configured to:render the content list for display; determine that the content list hasadvanced such that a first position of the plurality of positions iswithin a displayed region of the content list; receive a first item ofcontent transmitted from the server in response to the determinationthat the first position of the plurality of positions is within adisplayed region of the content list; render the first item of contentfor automatic playback at the first position within the content list;pause playback of the first item of content at a point in time inresponse to the displayed region of the content list being advanced tono longer include the first position; determine that the content listhas advanced such that a second position of the plurality of positionsis within the display region of the content list; and render, at thesecond position, the first item of content for automatic playbackbeginning near the point in time.
 6. The system of claim 5, wherein theclient agent is configured to receive, from the server, a second item ofcontent related to the first item of content for playback at a thirdposition in the content list.
 7. The system of claim 5, wherein thedevice receives, from the server, a second item of content unrelated tothe first item of content for playback at the second position in thecontent list.
 8. The system of claim 5, wherein the device receives,from the server, a second item of content for playback at a thirdposition in the content list, the first and second item of contentreceived together.
 9. A method for displaying video content on a devicein a content list, comprising: receiving, by a device from a server, acontent list comprising identifications of a plurality of items ofcontent and a plurality of positions where the plurality of items ofcontent can be provided; rendering the content list for display;determining, by a client agent executed by the device, that the contentlist has advanced such that a first position of the plurality ofpositions is within a displayed region of the content list; receiving afirst item of content transmitted from the server in response to thedetermination that the first position of the plurality of positions iswithin a displayed region of the content list; rendering the first itemof content for automatic playback at the first position within thecontent list; pausing playback of the first item of content at a pointin time in response to the displayed region of the content list beingadvanced to no longer include the first position; determining that thecontent list has advanced such that a second position of the pluralityof positions is within the display region of the content list;rendering, at the second position, the first item of content forautomatic playback beginning near the point in time.
 10. The method ofclaim 9, further comprising receiving, by the client agent from theserver, a second item of content related to the first item of contentfor playback at a third position in the content list.
 11. The method ofclaim 9, further comprising receiving, from the server, a second item ofcontent unrelated to the first item of content for playback at thesecond position in the content list.
 12. The method of claim 9, furthercomprising receiving, by the device from the server, a second item ofcontent for playback at a third position in the content list, the firstand second item of content received together.
 13. A system fordisplaying video content in a content list, comprising a serverconfigured to: receive, from a device, a request for a content list, thecontent list comprising identifications of a plurality of content items;identify a plurality of positions within the content list where videocontent can be provided; provide, to the device, the content list forpresentation to a user and a client agent for execution by the device,the client agent configured to play items of content and determine thata first position of the plurality of positions is within a displayedregion of the content list; receive a request from the device for afirst item of content transmitted in response to the determination thatthe first position of the plurality of positions is within the displayedregion of the content list; provide the first item of content to thedevice for automatic playback at the first position within the contentlist, the client agent identifying a first duration during which thefirst item of content is within the displayed region of the contentlist, the client agent pausing playback of the first item of content ata point in time in response to the displayed region of the content listbeing advanced to no longer include the first position, the client agentdetermining that the displayed region of the content list has advancedto a second position of the plurality of positions and resuming playbackof the first item of content near the point in time and at the secondposition of the content list.
 14. The system of claim 13, wherein theserver is further configured to provide, to the device, a second item ofcontent related to the first item of content for playback at a thirdposition in the content list.
 15. The system of claim 13, wherein theserver is further configured to provide, to the device, a second item ofcontent unrelated to the first item of content for playback at thesecond position in the content list.
 16. The system of claim 13, whereinthe server is further configured to provide, to the device, a seconditem of content for playback at a third position in the content list,the first and second item of content provided together.